pm2
✒️ 2025-05-26 14:16 내용 수정
서버 운영을 위한 패키지로, 서버에 에러가 생겨 꺼졌을 때 재실행 해주고, 멀티 프로세싱을 지원
- 노드 프로세스 개수를 1개 이상 늘릴 수 있기에 클라이언트 요청이 올 때 노드 프로세스에 고르게 분배할 수 있으므로 각 프로세스에 가해지는 부하를 분산 시킬 수 있다.
- 멀티 스레딩이 아니기에 서버의 메모리 같은 자원을 공유할 수 없어 세션 공유와 같은 기능을 사용할 수 없다.
- 이 때문에 프로세스 간에 공유하는 것이 없도록 설계해야 하며, 공유해야 하는 데이터는 DB를 사용해야 한다.
npm install pm2
- 서버의 package.json에서 pm2를 사용한 실행 script를
"start": "pm2 start server.js"형태로 추가한다.- 팀 프로젝트에서 사용한 package.json으로, 개발용에선 node express와 React를 동시 실행하기 위한 script가 있다.
"start": "pm2 start server.js -i 0"형태로 작성 시 생성하는 프로세스의 개수를 설정할 수 있다.-i 0: 현재 CPU 코어 개수만큼 프로세스 생성-i -1: 현재 CPU 코어 개수보다 1개 적은 수 만큼 프로세스 생성
// server에 있는 package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"server": "node ./server/server.js",
"client": "npm start --prefix client",
"dev": "concurrently \"npm run server\" \"npm run client\"",
"start": "pm2 start ./server/server.js" // pm2 사용
},
// 생략
}
- VSC 터미널에 script로 작성한 명령어 (
npm start)를 입력하면 pm2가 백그라운드에서 작동한다.
| 명령어 | 옵션 | 설명 |
|---|---|---|
npx pm2 list |
pm2 노드 프로세서 확인 | |
npx pm2 logs |
로그 확인 | |
--err |
에러 로그 확인 | |
---lines N |
출력 줄 수를 N개로 설정 | |
npx pm2 kill |
pm2 노드 프로세서 종료 | |
npx pm2 reload all |
pm2 노드 프로세서 다시 시작 | |
npx pm2 monit |
모니터링 |